<?php #coding: utf-8 ø æ å 

include_once "entitet.php";

class Individ extends Entitet {
	public $birth_ord = "Fødsel";
	public $death_ord = "Død";
	public $profession;
	public $alle_professioner;
	public $koen;
	public $race;
	public $race_id;
	public $alle_racer;
	public $maa_jeg_se_beskrivelsen;
	public $maa_jeg_redigere_beskrivelsen;
	public $foraeldrer;
	public $foraeldrer_ider;
	public $boern;
	public $boern_ider;
	public $soeskende;
	public $soeskende_ider;
	public $level;
	public $sidste_stats;
	public $racial_stat_bonus;

	function find_sidste_stats($id, $type){ //type = "temp"/"pot"
			//echo "<br><br>START: function find_sidste stats";
			//echo "<br>id er ".$id;
			//echo "<br>type er ".$type;
		$this->load->model('rolemaster/karakterark_model');
		$i = new individ();
		$i->find_level($id);
		$level = $i->level;
			//echo "<br>level er ".$level;
		$stats = $this->karakterark_model->stats($id,$type,$level);
			//echo "<br>stats er "; print_r($stats);
		$this->sidste_stats = $stats;
			//echo "<br>SLUT: function find_sidste stats<br><br>";
	}



	function find_foraeldrer($id)
	{
		$foraeldrer = array();
		$foraeldrer_ider = array();
		$query = $this->db->query
		('
			SELECT stamtabel.over_id, stamtabel.navn
			FROM (
				SELECT relation.over_id, navn.navn, relation.id
				FROM relation
				INNER JOIN (navn, element)
				ON relation.over_id = navn.id_element
				WHERE relation.type="familie"
				AND relation.slettet = 0
				AND element.slettet = 0
				AND element.id = relation.over_id
				AND under_id ='.$id.') as stamtabel
			ORDER BY navn

		');
		foreach($query->result() as $row)
    	{
			$foraeldrer[] = array
			(
				'id' => $row->over_id,

				'navn' => $row->navn,
			);
			$foraeldrer_ider[] = $row->over_id;
		}

		$this->foraeldrer = $foraeldrer;
		$this->foraeldrer_ider = $foraeldrer_ider;
	}

	function find_boern($id)
	{
		$boern = array();
		$boern_ider = array();

		$query = $this->db->query
		('
			SELECT under_id, navn 
			FROM relation INNER JOIN (navn, element)
			ON relation.under_id = navn.id_element
			WHERE relation.type="familie"
			AND element.id = relation.under_id
			AND element.slettet = 0
			AND relation.slettet = 0
			AND over_id ='.$id.'
			ORDER BY navn
		');
		foreach($query->result() as $row)
    	{
			$under_id = $row->under_id;
			$under_navn = $row->navn;
			$boern_ider[] = $row->under_id;
			$boern[]=array
			(
				'id' => $under_id,
				'navn' => $under_navn,
			);
		}

		$this->boern = $boern;
		$this->boern_ider = $boern_ider;

	}
	
	function find_soeskende($id)
	{
		$soeskende = array();
		$soeskende_ider = array();

		$query = $this->db->query
		('
			SELECT over_id, navn 
			FROM relation INNER JOIN (navn, element)
			ON relation.over_id = navn.id_element
			WHERE relation.type="familie"
			AND relation.over_id = element.id
			AND element.slettet = 0
			AND relation.slettet = 0
			AND under_id ='.$id.'
		');
		foreach($query->result() as $row)
    	{
			$foraeldre_id = $row->over_id;
			$query = $this->db->query
			('
				SELECT under_id, navn 
				FROM relation INNER JOIN (navn, element)
				ON relation.under_id = navn.id_element
				WHERE relation.type="familie"
				AND relation.under_id = element.id
				AND element.slettet = 0
				AND relation.slettet = 0
				AND over_id = '.$foraeldre_id.'
				ORDER BY navn
			');
			foreach($query->result() as $row)
   		 	{
				$soeskende_id = $row->under_id;
				$soeskende_navn = $row->navn;
				if(!in_array($soeskende_id,$soeskende_ider) && $soeskende_id !=$id)
				{
					$soeskende_ider[] = $soeskende_id;
					$soeskende[]=array
					(
						'id' => $soeskende_id,
						'navn' => $soeskende_navn,
					);
				}
			}
		}

		$this->soeskende = $soeskende;
		$this->soeskende_ider = $soeskende_ider;
	}


	public function ret_til_beskrivelse($id_beskrivelse){
		$deltager = $this->session->userdata('deltager');
		$ingame = $this->session->userdata('ingame');

		$this->load->model('indhold/element_beskrivelse');
		$bsk = new element_beskrivelse();
		$bsk->find_element_beskrivelse($id_beskrivelse);
		$beskrivelse = $bsk->element_beskrivelse;

		//echo $this->uri->segment(5);
		//finder kampagne for stamelement
		$query = $this->db->query('
    		SELECT kampagne 
		 	FROM element 
			WHERE id='.$this->uri->segment(5).'
		');

		$row = $query->row();

		if($beskrivelse['type_game'] == "off_game"){
			if($beskrivelse['id_deltager'] == $deltager['userid']){
				$this->maa_jeg_redigere_beskrivelsen = "ja";
				$this->maa_jeg_se_beskrivelsen = "ja";
				return;
			}
		}elseif($beskrivelse['type_game'] == "in_game"){
			if($beskrivelse['id_deltager'] == $deltager['userid'] and $beskrivelse['forfatter_id'] == $ingame['ingame_id']){
				$this->maa_jeg_redigere_beskrivelsen = "ja";
				$this->maa_jeg_se_beskrivelsen = "ja";
				return;
			}
		}


		$this->maa_jeg_redigere_beskrivelsen = "nej";
			//nu mangler vi bare at teste "se"		
	
		if($beskrivelse['hemmelig'] == 1){
			$this->maa_jeg_se_beskrivelsen = "ja";
			return;
		}elseif($beskrivelse['hemmelig'] == 3){
			
			//hvis du er gamemaster
			if($ingame['ingame_id'] == 0 and $row->kampagne == $ingame['kampagne_id']){
				$this->maa_jeg_se_beskrivelsen = "ja";
				$this->er_jeg_redigere_beskrivelsen = "ja";
				return;
			}


			//hvis den er delt med mig personligt
			$query = $this->db->query('
				SELECT *
				FROM deling_beskrivelse
				WHERE id_beskrivelse = '.$id_beskrivelse.'
				AND id_entitet = '.$ingame['ingame_id'].'
			');

			if($query->num_rows > 0){
				$this->maa_jeg_se_beskrivelsen = "ja";
				return;
			}

			//hvis den er delt med mig gennem en gruppe jeg er medlem af			
			$overgrupper = $this->session->userdata('overgrupper');
			if(isset($overgrupper) and !empty($overgrupper)){
				//overgrupper er for eksempel ikke sat, hvis man er GM
				$this->load->model('translation/array_model');
				$overgrupper = $this->array_model->ider_php_til_mysql($overgrupper);

				$query2 = $this->db->query('
					SELECT *
					FROM deling_beskrivelse
					WHERE id_beskrivelse = '.$id_beskrivelse.'
					AND id_entitet IN '.$overgrupper.'
				');

			
				if($query2->num_rows > 0){
					$this->maa_jeg_se_beskrivelsen = "ja";
					return;
				}
			}

			$this->maa_jeg_se_beskrivelsen = "nej";	

		}
	}

	public function tilmeld_til_kampagne($id_individ, $id_kampagne, $id_deltager){
	/*grunden til at denne funktion ikke ligger i entitet-modellen, er at kun individer kan oprettes som pc'er*/
		// Opretter individet som deltager i begivenheden kampagne:
		$data = array(
			'id_begivenhed' => $id_begivenhed, 
			'id_entitet' => $id_individ
		);

		$this->db->insert('begivenhed_entitet', $data); 

		// Oprettet individet som pc
		$data2 = array(
			'type_char' => 1, 
		);
		$this->db->where("id",$id_individ);
		$this->db->update('individ', $data2); 

		$data3 = array(
			'id' => $id_individ,
			'id_deltager' => $id_deltager
		);
		$this->db->insert('player_character',$data3);
	}


	public function find_profession($id) 
	{
		
		$query = $this->db->query
		('
    		SELECT profession.navn
		 	FROM individ, profession
			WHERE individ.id='.$id.'
			AND individ.profession = profession.id
		');

		if($query->num_rows()>0){
			$row = $query->row();
			$this->profession = $row->navn;
		}else{
			$this->profession = "ikke sat";
		}
	}

	public function find_alle_professioner() 
	{
		
		$query = $this->db->query
		('
    		SELECT id, navn
		 	FROM profession
		');

		foreach($query->result() as $row){
			$alle_professioner[]=array
			(
				'id' => $row->id,
				'navn' => $row->navn,
			);			
		}		
		$this->alle_professioner = $alle_professioner;
	}



	public function find_koen($id) 
	{
		//echo $id;
		$query = $this->db->query
		('
    		SELECT koen
		 	FROM individ
			WHERE individ.id='.$id.'
		');
		$row = $query->row();
		if($query->num_rows() > 0){
			$this->koen = $row->koen;
		}
	}

	public function find_level($id) 
	{
		//echo "<br>(model>core/individ.php) id er "; echo $id; 
		$query = $this->db->query
		('
    		SELECT level
		 	FROM individ
			WHERE individ.id='.$id.'
		');
		
		if($query->num_rows() > 0){
			$row = $query->row();
			if(!empty($row->level)){ //hvis level er sat
				$this->level  = $row->level;
			}else{
				$this->level = 0;
			}
		}
	}
	
	public function find_alle_racer(){

		$query = $this->db->query
		('
			SELECT navn.navn, race.id
			FROM race, navn
			WHERE race.id = navn.id_element
		');
		foreach($query->result() as $row){
			$alle_racer[]=array
			(
				'id' => $row->id,
				'navn' => $row->navn,
			);			
		}		

		$this->alle_racer = $alle_racer;

		
		
	} 


	public function find_race($id) 
	{
		//echo "(model>core/individ) function find_race() kører";
		$query = $this->db->query
		('
			SELECT navn.navn, race.*
			FROM race, navn, individ
			WHERE race.id = navn.id_element
			AND race.id = individ.race
			AND individ.id = '.$id.'
		');

		if($query->num_rows() > 0){
			$row = $query->row();
			$this->race = $row->navn;
			$this->race_id = $row->id;
			$this->racial_stat_bonus = array(
				'Lu' => 0,
				'Ag' => $row->ag,
				'Co' => $row->co,
				'Me' => $row->me,
				'Re' => $row->re,
				'SD' => $row->sd,
				'Em' => $row->em,
				'In' => $row->in,
				'Pr' => $row->pr,
				'Qu' => $row->qu,
				'St' => $row->st,
			);
		}
	}

	public function set_race($id, $id_race){
		$query = $this->db->query('
			UPDATE individ
			SET race = '.$id_race.'
			WHERE id = '.$id.'
		');
	}


	public function set_koen($id, $nyt_koen){
		$query = $this->db->query('
			UPDATE individ
			SET koen = "'.$nyt_koen.'"
			WHERE id = '.$id.'
		');
		return;
	}


	function ny_familie_relation($over_id, $under_id)
	{
		echo $over_id;
		echo $under_id;

		$i = new individ();
		$i->find_relation($under_id, $over_id, "familie");
		$relation = $i->relation;
			echo "relation er "; print_r($relation);
		$i->find_relation($over_id, $under_id, "familie");
		$relation_reverse = $i->relation;
			echo "relation_reverse er "; print_r($relation_reverse);
		if(!empty($relation)){
			//findes relationen allerede - måske med slettet == 1
			$i->unslet_relation($under_id, $over_id, "familie");
			return;
		}elseif(!empty($relation_reverse)){
			//findes den omvendte relation allerede - da må der ikke oprettes noget, såfremt den ikke er slettet.
			if($relation_reverse['slettet'] == "0"){
				return;
			}
		}

		$i->ny_relation($under_id, $over_id, "familie");

	}



}
